package com.xmut.xmutbackend.config;

import com.xmut.xmutbackend.Interceptor.LoggingInterceptor;
import com.xmut.xmutbackend.Interceptor.LoginCheckInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {
    //拦截器对象
    @Autowired
    private LoginCheckInterceptor loginCheckInterceptor;
    
    @Autowired
    private LoggingInterceptor loggingInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 首先注册日志记录拦截器，拦截所有请求且不排除任何路径
        registry.addInterceptor(loggingInterceptor)
                .addPathPatterns("/**")
                .order(1); // 确保先执行
        
        // 然后注册登录验证拦截器
        registry.addInterceptor(loginCheckInterceptor)
                .addPathPatterns("/**")
                .excludePathPatterns(
                        "/users/login",                // 排除登录接口
                        "/users/register",             // 排除注册接口
                        "/users/reset-password",       // 排除重置密码
                        "/users/test",                 // 排除测试接口
                        "/login",                      // 兼容旧接口
                        "/upload",                     // 文件上传
                        "/stats",                      // 学生统计接口
                        "/stats/**",                   // 学生统计子接口
                        "/*.html",                     // HTML页面
                        "/**/*.html",                  // 所有HTML页面
                        "/**/*.js",                    // JavaScript文件
                        "/**/*.css",                   // CSS文件
                        "/**/*.png",                   // 图片文件
                        "/**/*.jpg",
                        "/**/*.jpeg",
                        "/**/*.gif",
                        "/**/*.svg",
                        "/**/*.ico",
                        "/favicon.ico"                 // 网站图标
                )
                .order(2); // 后执行
    }

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("*")
                .allowCredentials(true)
                .maxAge(3600);
    }
}
